/*********************************************
kasm.h

************************************************/

#include "defs.h"

unsigned int _read_msw();

void _lidt (IDTR *idtr);

void _mascaraPIC1 (byte mascara);  /* Escribe mascara de PIC1 */
void _mascaraPIC2 (byte mascara);  /* Escribe mascara de PIC2 */

void _Cli(void);        /* Deshabilita interrupciones  */
void _Sti(void);	 /* Habilita interrupciones  */
void _halt(void);	 /* Detiene el procesador  */

//funciones de lectura y escritura de los registros cr0 y cr3
int _read_cr0(void);
void _write_cr0(int cr0);
int _read_cr3(void);
void _write_cr3(void * pageDirectory);

void _int_08_hand();      /* Timer tick */
void _int_09_hand();      /* Teclado */
void _int_0E_hand();	  /* Page Fault */
void _int_7F_hand();      /* Llamada por yield */
void _int_80_hand();      /* Syscall */
void _int_74_hand();      /* Mouse */


//funcion que realiza un IN de assembler al puerto port
char _inport(int port);

//funcion que realiza un OUT de assembler al puerto port,
//con el valor data
char _outport(int port, char data);


#include "syscalls.h"

//funcion llamada por las sistcalls encargada de llamar a la INT 80h
int	_syscall(syscallOpNum opNum, int arg1, int arg2, int arg3, char * arg4,
	char * arg5);

//funcion que sede el procesador
void _sys_yield(void);


void _debug (void);

